/*******************************************************************************
    Universidad del Valle de Guatemala
    Algoritmos y estructuras de datos
    Karen Tojin   08091
    Fecha: 30 de Julio de 2009
    Descricion: Programa que simula un banco, con el uso de colas
***************************************************************************** */

/**
 *
 * @author karenAndy
 */
public class ColasListaCircular<Type> extends AbstractImpBanco {
    ListaCircular<Type> cola;

    public ColasListaCircular(){
        personas = 0;
        disponibles = max;
        cola = new ListaCircular<Type>();
    }

    @Override
    public void Push(Object newPerson){
    // post: agrega un elemento al final de la cola
        cola.PushFinal(newPerson);
        personas++;
        disponibles--;
    }

    @Override
    public Object Pop(){
    // pre: la lista no está vacía
    // post: quita y devuelve el último elemento que ingresó a la lista
        Type temp = (Type) cola.PopPrimero();
        if(temp == null)
            return null;
        else{
            personas--;
            disponibles++;
            return temp;
        }
    }


    @Override
    public Object Peek(){
    // pre: el arreglo no está vacío
    // post: devuelve el último valor ingresado al arreglo
        return cola.Peek();
    }
}